package com.small.commom.filetools;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.util.Log;

/*
 * �ҵĹ���:Ǧ��,��Ƥ,����һ�����ӹ̶�ͼƬ����
 */
//Ҳ�����Ϊһ������,��Ƥ.Ǧ�ʵ��ϰ�
public class Mytool {
	public static int type=0;//0:Ǧ��,1:��Ƥ,2:���ӹ̶�ͼƬ			...Ǧ�ʺ���Ƥ�����߶�����·����
	public int color;
	public int size;     //�ʴ��Ĵ�ϸ


	Mytool() {
		color=Color.BLACK;//��ָ����ɫ,Ĭ��Ϊ��ɫ
		size=1;                 //Ĭ����1  
	}

	Mytool(int color,int size) {
		this.color = color;
		this.size=size;
	}

	public void draw(Canvas canvas) {
	}
	
	public void move(float mx,float my){
		
	}
}
//Ǧ��
class Pen extends Mytool{
	/*
	 * Ǧ�ʵ�����:��ɫ,��ϸ,
	 */
	Path path;
	int size;
	Pen(){
		path=new Path();
		size=1;
	}
	Pen(float x,float y,int size,int color){//��������ʼ��Ĺ��췽��
		super(color,size);
		path=new Path();
		this.size=size;
		path.moveTo(x, y);
		path.lineTo(x, y);	
	}
	public void draw(Canvas  canvas){
		Paint paint=new Paint();
		paint.setAntiAlias(true);
		paint.setDither(true);
		paint.setFlags(Paint.ANTI_ALIAS_FLAG);  //������


		//���е�����
		paint.setColor(color);
		paint.setStrokeWidth(size);
		paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeCap(Paint.Cap.ROUND);
        canvas.drawPath(path, paint);
	}
	public void move(float mx,float my){
		path.lineTo(mx, my);
	}
}
//��Ƥ
class Eraser extends Mytool{
	/*
	 * ��Ƥ����:��Ƥ��С
	 */
	
	Path path;
	int size;
	
	Eraser(){
		path=new Path();
		size=1;
	}
	Eraser(float x,float y,int size,int color){//������Ƥ��,��Ӧ������ɫ��,����˵����ɫ��Ҫ����ɫ���ó�͸��ɫ
		super(color,size);
		path=new Path();
		this.size=size;
		path.moveTo(x, y);
		path.lineTo(x, y);	
	}
	public void draw(Canvas canvas) {
		Paint paint = new Paint();
		paint.setAntiAlias(true);
        paint.setDither(true);
        
        paint.setColor(Color.RED);
        paint.setStrokeWidth(size);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeCap(Paint.Cap.SQUARE);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
        canvas.drawPath(path, paint);
	}
	public void move(float mx,float my){
		path.lineTo(mx, my);
	}
	
	
}
//����ͼƬ����
class StickerPicS extends Mytool{//�����ʱ�Ȳ���
	/*
	 * ����:ͼƬ����(������ʱ�̶�Ϊ�������,������ͼ��),
	 * ͼƬ���ŵĴ�С(��������Ƚ����)�����Ƚ�ͼƬ�����
	 */

	float x,y;
	Bitmap bitmap;  //��ǰ��ͼƬ
	Path path;
	StickerPicS(Bitmap bitmap,float x,float y){//��ֵ��,��һ��Ĭ�ϵ�ͼƬ
		//super(color,size);
		this.x=x;
		this.y=y;
		this.bitmap=bitmap;
		
		
	}
	public void draw(Canvas canvas){//���ͼƬ���ͻ��� ��ǰͼƬĿǰ������
		Paint paint = new Paint();
		canvas.drawBitmap(getBitmap(), getX(), getY(), paint);//Ҫ�������õ�ǰλ��
		//Log.d("mytool", "stickerPicsdraw==================");
	}
	public float getX() {
		return x;
	}
	public void setX(float x) {
		this.x = x;
	}
	public float getY() {
		return y;
	}
	public void setY(float y) {
		this.y = y;
	}
	public Bitmap getBitmap() {
		return bitmap;
	}
	public void setBitmap(Bitmap bitmap) {
		this.bitmap = bitmap;
	}
	public void move(float mx,float my){//���move��Ǧ�ʵ�move������ͬ��,��Ϊ�������һ�������һ�����
		setX(mx);
		setY(my);
	}
	
	
	
}
